/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import muhnes.sizoo.dal.GeneroDao;
import muhnes.sizoo.dal.GeneroDaoImpl;
import muhnes.sizoo.modelo.Genero;
import muhnes.sizoo.dal.FamiliaDao;
import muhnes.sizoo.dal.FamiliaDaoImpl;
import muhnes.sizoo.modelo.Familia;
/**
 *
 * @author Ricardo Orellana
 */
@ManagedBean(name = "generoBean")
@ViewScoped
public class GeneroBean implements Serializable {
    
    private Genero genero;
    private List<Genero> listaGenero;
    private List< SelectItem > listaFamilia;
    
    public GeneroBean() {
        GeneroDao dao = new GeneroDaoImpl();
        genero = new Genero();
        listaGenero = dao.buscarTodos();
    }

    public Genero getGenero() {
        return genero;
    }

    public void setGenero(Genero genero) {
        this.genero = genero;
    }
    
    public List<Genero> getListaGenero() {
        if( listaGenero == null ) {
            GeneroDao dao = new GeneroDaoImpl();
            listaGenero = dao.buscarTodos();
        }
        return listaGenero;
    }

    public void setListaGenero(List<Genero> listaGenero) {
        this.listaGenero = listaGenero;
    }   
    
     public void prepararAdicion( ActionEvent event  ){
        genero = new Genero();
    }
    
    public void prepararModificacion( Genero genero ){
        this.genero = genero;
    }
    
    public void prepararEliminacion( Genero genero ){
        this.genero = genero;
    }
    
    public void agregarGenero( ActionEvent event ){
        GeneroDaoImpl dao = new GeneroDaoImpl();
        genero.setHabilitado( Boolean.TRUE );
        dao.guardar( genero );
        recrearLista();
    }
    
     public void actualizarGenero( ActionEvent event ){
        GeneroDaoImpl dao = new GeneroDaoImpl();
        dao.actualizar( genero );
        recrearLista();
    }
    
    public void eliminarGenero( ActionEvent event ){
        GeneroDaoImpl dao = new GeneroDaoImpl();
        dao.eliminar( genero );
        recrearLista();
    }
    
    
    public List< SelectItem > getListaFamilia() {
        if( listaFamilia == null ) {
            listaFamilia = new ArrayList< SelectItem >();
            FamiliaDao dao = new FamiliaDaoImpl();
            for( Familia familia : dao.buscarTodos() ) {
                SelectItem item = new SelectItem( familia, familia.getNombre() + " " + familia.getSubfamilia()
                        + " " + familia.getTribu());
                listaFamilia.add( item );
            }
        }
        return listaFamilia;
    }
    
    void recrearLista() {
        listaGenero = null;
    }
    
}
